
package modelos;

/**
 * Representa una serie de datos necesarios para modelar una Grafica de Barras
 * @author Rafael Carrillo 90465
 */
public class DatosBarras {
    private String titulo;
    private String tituloX;
    private String tituloY;
    private Dato[] datos;
    private int numDatos;
    private double minValor;
    private double maxValor;
    
    /**
     * Crea un objeto DatosBarras con los titulos para los Ejes y el Titulo de la Grafica
     * asi como los datos a graficar en un arreglo de tipo  y calcula el rango de datos
     * @param titulo Titulo de la Grafica
     * @param tituloX Titulo del eje X
     * @param tituloY Titulo del eje Y
     * @param datos  Arreglo de Datos a Graficar
     */
    public DatosBarras(String titulo, String tituloX, String tituloY, Dato[]datos) {
        this.titulo = titulo;
        this.tituloX = tituloX;
        this.tituloY = tituloY;
        this.datos=datos;
        calculaRango();
    }
    /**
     * Devuelve el arreglo de datos de la grafica
     * @return  Datos obtenidos de la grafica
     */
    public Dato[] getDatos() {
        return datos;
    }
    /**
     * Establece los datos de la grafica con el parametro, al ejecutar este metodo
     * los valores max y min se vuelven a calcular
     * @param datos Datos a sustituir
     */
    public void setDatos(Dato[] datos) {
        this.datos = datos;
        calculaRango();
    }
    /**
     * Devuelve el valor maximo de la grafica
     * @return Valor maximo encontrado
     */
    public double getMaxValor() {
        return maxValor;
    }
    
    /**
     * Devuelve el valor minimo de la Grafica
     * @return  Valor minimo encontrado
     */
    public double getMinValor() {
        return minValor;
    }
    
    /**
     * Devuelve el numero de datos presentes en la grafica
     * @return Numero de datos en el modelo
     */
    public int getNumDatos() {
        return numDatos;
    }   
    /**
     * Devuelve el titulo de la grafica
     * @return Titulo de la Grafica
     */
    public String getTitulo() {
        return titulo;
    }
    
    /**
     * Establece el titulo de la grafica con el parametro
     * @param titulo Titulo de la grafica 
     */
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    /**
     * Devuelve el rotulo del eje X
     * @return Rotulo del eje X
     */
    public String getTituloX() {
        return tituloX;
    }
    
    /**
     * Establece el valor del rotulo para el eje x
     * @param tituloX Rotulo para el Eje X
     */
    public void setTituloX(String tituloX) {
        this.tituloX = tituloX;
    }
    
    /**
     * Devuelve el valor del rotulo para el eje Y
     * @return Rotulo del eje Y
     */
    public String getTituloY() {
        return tituloY;
    }
    
    /**
     * Establece el valor del rotulo para el eje Y
     * @param tituloY Rotulo del eje Y
     */
    public void setTituloY(String tituloY) {
        this.tituloY = tituloY;
    }
    
    /**
     * Calcula los valores maximos y minimos de la serie de datos
     */
    private void calculaRango(){
        numDatos=datos.length;
        double max=0;
        for(int i=0;i<datos.length;i++){
            if(datos[i].valor>max)
                max=datos[i].valor;
        }
        maxValor=max;
        double min=max;
        for(int i=0;i<datos.length;i++){
            if(datos[i].valor<min)
                min=datos[i].valor;
        }
        minValor=min;
    }
    
}
